package com.eunion.fileserver.upload;

import java.io.InputStream;
import java.util.List;

/**
 * 文件上传.
 * @since 2017年2月17日
 */
public interface IFileUpload {

	/**
	 * 上传文件，返回相对根目录地址.
	 * @param fv 文件上传对象.
	 * @return 返回相对根目录地址,fv中的数据也会改变.
	 */
	void uploadFileInputStream(FileVo fv, String path);

	/**
	 * 上传文件，返回相对根目录地址.
	 * @param fv 文件上传对象.
	 * @return 返回相对根目录地址,fv中的数据也会改变.
	 */
	void uploadFileInputStream(FileVo fv);

	/**
	 * 删除文件.
	 * @param deleteFile 待删除文件.
	 * @return 文件删除的状态，true表示成功,false表示失败.
	 */
	boolean deleteFile(String deleteFile);

	/**
	 * 下载文件.
	 * @param source 待下载文件,相对根路径，不带前缀/
	 * @param destination localPathName 下载到本地的绝对地址及文件
	 * @return 状态，true表示成功,false表示失败.
	 */
	boolean downloadFile(String source, String destination);

	/**
	 * 下载文件到流.
	 * @param source 待下载文件,相对根路径，不带前缀/
	 * @return InputStream 输出流， null表示失败
	 */
	InputStream getFileInputStream(String source);

	/**
	 * @param directory 待查阅目录,相对根路径，不带前缀/
	 * @return 返回目录有的文件列表. null表示失败
	 */
	List<String> listFiles(String directory);

}
